-
-
Notifications
You must be signed in to change notification settings - Fork 239
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement import of WebDAV folders #5914
Conversation
🎉 Ta-daaa, freshly created APKs are available for e4cfc09: arm64-android |
8983269
to
719940b
Compare
@nirvn let's put this into "draft" until actual code has landed that can be tested and eventually merged |
d497e20
to
63353e7
Compare
Absolutely, it was in my head as a TODO for a long time and it finally evaporated. I will add it to the backlog. Personally I cannot handle the implementation in the upcoming weeks. See the task here: https://app.clickup.com/t/86c1hean6 |
Thanks for the work.
Are the upstream projects aware of this work? Is a PR to merge those modernization in upstream projects is planned? Or upstream projects are dead? |
I have opened PR's here: https://github.com/PikachuHy/QtWebDAV/pulls with not response so far. |
OK, nice. If you have time to do it I suggest to open an issue to broadcast your fork yes to have more chances to get consolidation effort from other third-parties. |
I hesitated so far as I wasn't sure if we should potentially put this under an organisation umbrella (e.g. QGIS) |
5545ccf
to
cff88e4
Compare
…d infinite re-upload
…peration, makes for a nicer password UX too
…load folder dialogs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work, I have not test APK, i just read the codes and its clean 👍
adding small comments.
This PR enables QField to import a remote WebDAV folder into its imported projects' local storage. The functionality is available in the bottom right (+) import button within the local file picker section:
The PR is the foundational stone to implement simple download/upload synchronization once a folder is imported. That will come in a subsequent set of commits.The PR also implements a download from and uploading to webdav server for imported webdav folders. The new pair of actions appear in the local file picker for any folder that is the root of an imported webdav folder, or any of its child folder:
When downloading/uploading against the root folder, all content will be pushed/pulled. If executed against a child folder, only that child folder will be considered. For both actions, files will be downloaded or uploaded whenever the last modified date does not match. It's a simple logic that is easy for users to understand.
A pair of download/upload actions has also been added into the (current) project folder's root view, provided the project resides within a webdav imported folder:
That makes for a nice UX where users don't need to drill down into a large list of imported folders.
Finally, when triggering a download or upload, QField will request a confirmation, informing users of data being overwritten:
@suricactus , I am wondering whether we should upgrade the QFieldCloudConnection class to also make use of the authentication manager to store / retrieve remembered passwords (see implementation here).
Edit: I should have mentioned that this work benefited from the pre-existing QtWebDAV library (this fork - https://github.com/PikachuHy/QtWebDAV - which itself was a fork of https://github.com/mhaller/qwebdavlib). We have taken the time to modernize its cmake configuration and add some extra functionality. Our fork lives here: https://github.com/m-kuhn/QtWebDAV